package com.ds.applet.service.impl;

import java.util.List;

import org.springframework.stereotype.Service;
import com.ds.applet.mapper.MiniBackdropMapper;
import com.ds.applet.domain.MiniBackdrop;
import com.ds.applet.service.IMiniBackdropService;

import javax.annotation.Resource;

/**
 * 背景图Service业务层处理
 *
 * @author liucan
 * @date 2024-04-04
 */
@Service
public class MiniBackdropServiceImpl implements IMiniBackdropService {
    @Resource
    private MiniBackdropMapper miniBackdropMapper;

    /**
     * 查询背景图
     *
     * @param id 背景图主键
     * @return 背景图
     */
    @Override
    public MiniBackdrop selectMiniBackdropById(Long id) {
        return miniBackdropMapper.selectMiniBackdropById(id);
    }

    /**
     * 查询背景图列表
     *
     * @param miniBackdrop 背景图
     * @return 背景图
     */
    @Override
    public List<MiniBackdrop> selectMiniBackdropList(MiniBackdrop miniBackdrop) {
        return miniBackdropMapper.selectMiniBackdropList(miniBackdrop);
    }

    /**
     * 新增背景图
     *
     * @param miniBackdrop 背景图
     * @return 结果
     */
    @Override
    public int insertMiniBackdrop(MiniBackdrop miniBackdrop) {
        int repeat = repeat(miniBackdrop);
        if (repeat == 1) {//该位置没有已经显示的背景图，可正常添加
            return miniBackdropMapper.insertMiniBackdrop(miniBackdrop);
        }
        return repeat;
    }

    /**
     * 修改背景图
     *
     * @param miniBackdrop 背景图
     * @return 结果
     */
    @Override
    public int updateMiniBackdrop(MiniBackdrop miniBackdrop) {
        int repeat = repeat(miniBackdrop);
        if (repeat == 1) {//该位置没有已经显示的背景图，可正常添加
            return miniBackdropMapper.updateMiniBackdrop(miniBackdrop);
        }
        return repeat;
    }

    /**
     * 以上两个方法重复性代码
     */
    public int repeat(MiniBackdrop miniBackdrop) {
        //如果是修改成显示状态，则判断该位置是否有显示中的背景图
        if (miniBackdrop.getBaShow() == 0) {
            MiniBackdrop miniBackdrop1 = new MiniBackdrop();
            miniBackdrop1.setBaPosition(miniBackdrop.getBaPosition());//位置
            miniBackdrop1.setBaShow(0);//0显示
            miniBackdrop1.setToApplet(miniBackdrop.getToApplet());//所属小程序
            List<MiniBackdrop> miniBackdrops = miniBackdropMapper.selectMiniBackdropList(miniBackdrop1);
            MiniBackdrop miniBackdrop2 = new MiniBackdrop();
            if (miniBackdrops.size() > 0) {
                miniBackdrop2 = miniBackdrops.get(0);
                if (!miniBackdrop2.getId().equals(miniBackdrop.getId())) {
                    return -1;
                }
            }
        }
        return 1;
    }

    /**
     * 批量删除背景图
     *
     * @param ids 需要删除的背景图主键
     * @return 结果
     */
    @Override
    public int deleteMiniBackdropByIds(Long[] ids) {
        return miniBackdropMapper.deleteMiniBackdropByIds(ids);
    }

    /**
     * 删除背景图信息
     *
     * @param id 背景图主键
     * @return 结果
     */
    @Override
    public int deleteMiniBackdropById(Long id) {
        return miniBackdropMapper.deleteMiniBackdropById(id);
    }
}
